
\section{任务三}
	任务三是对学者各论文未来的被引总数进行预测，给定的数据库含有170万的学者，以及他们发表的300万篇文章的信息。而其中并未包含文章的摘要部分，因此若通过知识发现或者其他基于话题的模型，得到的效果可能不令人满意，需要另辟蹊径。
	
	\subsection{概述}
		首先，我们根据实际情况，提出一个假设，后续的工作都基于如下假设：
		\begin{hypothesis}
			\label{h2.1}
			一个学者截至给定时间$t$的被引总数，等于其发表的各论文截至时间$t$的被引总数之和。更正式地：
			\begin{equation}
				S(people,t) = \sum_{paper\in papers}s(paper,t)
			\end{equation}
			其中，$papers$是该学者发表的（或参与发表的）文章的集合。
		\end{hypothesis}
	借助假设\ref{h2.1}，我们把对学者被引总数的预测，转换到求论文的被引总数。即，如果能求得各论文在未来时间$t$的被引总数，那么学者在时间$t$的被引总数就是一个简单求和过程。下面一节我们来讨论如何求论文的未来被引总数。
	
	\subsection{预测论文的被引总数}
		\label{sec2.2}
		对于单篇论文$p$，它在未来时间$t_{future}$的被引总数，可以用该论文截至某历史时间$t_{his}$的被引总数乘以一个系数$\omega$来近似。我们不打算给出证明，但是可以简单思考一下，假设论文$p$现在以及未来的被引总数分别是$s_{p1}$、$s_{p2}$，那么总可以找到一个系数$\omega_p$，满足：
		\begin{equation}
			\label{eq1}
			s_{p2} = \omega_p * s_{p1}
		\end{equation}
		请注意，式\ref{eq1}与时间没有太大关系，只要满足$s_{p1}$的时间节点早于$s_{p2}$的，并且是真实数据即可。在下文中，我们称$\omega_p$为文章$p$的\textbf{放大系数}。
		
		那么为什么说是近似，而不是``精确地等于''呢？因为上述结论并不适用于$s_{p1}$等于$0$的情况，当然，的确可以通过在式\ref{eq1}的右端加一个常数$c$，就总能找到一对常数$\omega$与$c$，使得上述结论成立，但是我们并不打算这样做，原因见后文。如果不加该常数，那么就只能说是``近似''。
		
	\subsection{训练}
		借助假设\ref{h2.1}与式\ref{eq1}，我们可以把目标问题重写为：
		\begin{equation}
			S(people,t_{future}) = \sum_{paper\in papers}\omega_{paper} * s(paper,t_{his})
		\end{equation}
		这是一个线性回归问题。
		
		我们已知$S(people,t_{future})$，因为当$t_{future}$取2017年6月的时候，这一部分由训练数据给出。同时，当$t_{his}$取2013年底时，$s(paper,t_{his})$可由给定的数据集$papers.txt$统计得出。我们仅需要对每篇文章找到最优的$\omega_{paper}$。
		
		更进一步地，即是解决如下问题：
		\begin{equation}
			\label{eq2}
			\bm{\omega} = \arg\underset{\bm{\omega}}{\min}\ \text{Err}(\bm{s}_{his}\cdot \bm{\omega},\bm{S}_{future})
		\end{equation}
		其中，$\bm{\omega}$是一个列向量，长度为文章数量，每个元素$\bm{\omega}_i$的含义表示第$i$篇文章的放大系数；$\bm{s}_{his}$是一个矩阵，行数为学者数量，列数为文章数量，第$i$行第$j$列的元素表示学者$i$，对于编号为$j$的文章，截至某历史时刻$\text{his}$的被引总数（若第$j$篇文章不是学者$i$发表的，则该位置为0）；$\bm{S}_{future}$是一个列向量，长度为学者数量，每个元素表示学者$i$截至某未来时刻$\text{future}$的被引总数，即训练数据；$\text{Err}(a,b)$表示$a$与$b$的误差，计算公式由比赛规则给出。
		
		显然，该回归问题的训练集$\bm{s}_{his}$会有300万维特征，100万个样本，若用离线方法无论是时间复杂度还是空间复杂度都是无法忍受的，因此我们借助了在线学习的方式\cite{PA}来训练$\bm{\omega}$。
		
		同时，我们发现，优化上述问题的过程相当于求解一个含有300万个未知数、100万个方程构成的方程组，这会有无数个解，我们当然希望未知数越少越好，因此，在\ref{sec2.2}节中，我们使用近似的方式来表示$s_{p2}$而不加常数的原因就在于此，因为那样的话会使未知数的数量增加一倍，即有600万个，而只有100万个方程，这是不能接受的。
		
	\section{优化}
	针对实验数据，我们进行了如下优化：
	\begin{enumerate}
		\item 由于文章\cite{PA}是一种单遍算法，从实验结果来看，训练一遍并不能得到最好的效果，因此我们在条件允许的情况下尽可能多地增加训练次数。
		\item 尽管在线学习是一种减少空间开销、计算复杂度的好方法，但是我们觉得仍然不令人满意。注意到式\ref{eq2}中的$\bm{s}_{his}$是一个极为稀疏的矩阵，因为一个学者不可能发表数万篇文章。矩阵中绝大部分都是0元素。因此在在线学习的训练过程中，对每个样本，我们只利用非0的有效值训练，这样可以显著提高效率。
		\item 由于比赛规则计算误差的公式不太好直接优化，若是直接用给定的公式去计算误差，那么目标问题将难以求解，因此我们采用均方误差公式来近似。从实验结果来看，这一近似也是比较成功的。
	\end{enumerate}
		
		
		
		